/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package td1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

/**
 * Boite de dialogue permettant la création de quadrilatere dans la zone de dessin
 * @author saluzzo
 */
public class InspecteurQuadrilatere extends JDialog implements ActionListener, WindowListener {

    // Pas utilisé
    public void windowActivated(WindowEvent e) {
    }

    public void windowClosed(WindowEvent e) {
        //Lorsque la boite de dialogue est fermé, elle re-active la fenetre d'origine
        Parent.setEnabled(true);
        Parent.toFront();
    }

    public void windowClosing(WindowEvent e) {
        //Lorsque la boite de dialogue est fermé, elle re-active la fenetre d'origine
        Parent.setEnabled(true);
        Parent.toFront();
    }

    // Pas utilisé
    public void windowDeactivated(WindowEvent e) {
    }

    // Pas utilisé
    public void windowDeiconified(WindowEvent e) {
    }

    // Pas utilisé
    public void windowIconified(WindowEvent e) {
    }

    // Pas utilisé
    public void windowOpened(WindowEvent e) {
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == this.ListeQuadrilatere) {
            //Dans le cas d'une actione en rapport avec la liste des quadrilatere disponible
            if (this.ListeQuadrilatere.getSelectedItem() == "Carre") {
                afficherInfoCarre();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Cerf Volant") {
                afficherInfoCerfVolant();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Parallelogramme") {
                afficherInfoParallelogramme();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Quadrilatere") {
                afficherInfoQuadrilatere();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Losange") {
                afficherInfoLosange();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Rectangle") {
                afficherInfoRectangle();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Trapeze") {
                afficherInfoTrapeze();
            }
        }
        if (e.getSource() == this.BoutonValidation) {
            //Dans le cas d'une validation de l'inspecteur
            if (this.ListeQuadrilatere.getSelectedItem() == "Carre") {
                creerCarre();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Cerf Volant") {
                creerCerfVolant();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Parallelogramme") {
                creerParallelogramme();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Quadrilatere") {
                creerQuadrilatere();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Losange") {
                creerLosange();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Rectangle") {
                creerRectangle();
            }
            if (this.ListeQuadrilatere.getSelectedItem() == "Trapeze") {
                creerTrapeze();
            }
            this.dispose();
        }

    }

    public InspecteurQuadrilatere(IHM pParent, int ChoixListes) {
        super(pParent);
        Parent = pParent;
        this.addWindowListener(this);
        this.setTitle("Inspecteur Quadrilatere");
        GroupLayout LayoutInsepecteur = new GroupLayout(this.getContentPane());
        this.getContentPane().setLayout(LayoutInsepecteur);
        LayoutInsepecteur.setAutoCreateGaps(true);
        LayoutInsepecteur.setAutoCreateContainerGaps(true);

        String[] donnees = {"Carre", "Cerf Volant", "Losange", "Parallelogramme", "Quadrilatere", "Rectangle", "Trapeze"};
        this.ListeQuadrilatere = new JComboBox(donnees);
        this.ListeQuadrilatere.addActionListener(this);
        

        this.PanneauInfo = new JPanel();
        this.LayoutPanneauInfo = new BoxLayout(this.PanneauInfo, BoxLayout.PAGE_AXIS);
        this.PanneauInfo.setLayout(this.LayoutPanneauInfo);
        this.PanneauInfo.setBorder(BorderFactory.createTitledBorder(" Parametres "));

        this.TexteDescriptif = new JTextArea();

        this.PanneauChoixCouleur = new JPanel();
        this.PanneauChoixCouleur.setBorder(BorderFactory.createTitledBorder(" Couleur "));
        this.PanneauChoixCouleur.add(this.TexteDescriptif);

        this.Couleur = new JColorChooser();
        this.PanneauChoixCouleur.add(this.Couleur);
        this.BoutonValidation = new JButton("Valider");
        this.BoutonValidation.addActionListener(this);

        LayoutInsepecteur.setHorizontalGroup(LayoutInsepecteur.createParallelGroup().addComponent(this.ListeQuadrilatere).addComponent(this.PanneauInfo).addComponent(PanneauChoixCouleur).addComponent(this.BoutonValidation, GroupLayout.Alignment.CENTER));
        LayoutInsepecteur.setVerticalGroup(LayoutInsepecteur.createSequentialGroup().addComponent(this.ListeQuadrilatere).addComponent(this.PanneauInfo).addComponent(PanneauChoixCouleur).addComponent(this.BoutonValidation));

        LayoutInsepecteur.linkSize(SwingConstants.VERTICAL, this.ListeQuadrilatere);
        this.pack();
        this.setVisible(true);
        this.getParent().setEnabled(false);

        this.ListeQuadrilatere.setSelectedIndex(ChoixListes);
    }

    private void afficherInfoCarre() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Taille:"));
        this.PanneauInfo.add(new JTextField(7));
        this.pack();
    }

    private void afficherInfoCerfVolant() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Demi diagonale AO:"));
        this.PanneauInfo.add(new JTextField(7));
        this.PanneauInfo.add(new JLabel("Demi diagonale OB:"));
        this.PanneauInfo.add(new JTextField(7));
        this.PanneauInfo.add(new JLabel("Demi diagonale OD:"));
        this.PanneauInfo.add(new JTextField(7));
        this.pack();
    }

    private void afficherInfoLosange() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Diagonale AC:"));
        this.PanneauInfo.add(new JTextField(7));
        this.PanneauInfo.add(new JLabel("Diagonale BD:"));
        this.PanneauInfo.add(new JTextField(7));
        this.pack();
    }

    private void afficherInfoParallelogramme() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point B:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point D:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.pack();
    }

    private void afficherInfoQuadrilatere() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:\n"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point B:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point C:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point D:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.pack();
    }

    private void afficherInfoRectangle() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Largeur:"));
        this.PanneauInfo.add(new JTextField(7));
        this.PanneauInfo.add(new JLabel("Hauteur:"));
        this.PanneauInfo.add(new JTextField(7));
        this.pack();
    }

    private void afficherInfoTrapeze() {
        this.PanneauInfo.removeAll();
        this.PanneauInfo.add(new JLabel("Coordonné du point A:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point B:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Coordonné du point D:"));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JTextField(5));
        this.PanneauInfo.add(new JLabel("Largeur CD:"));
        this.PanneauInfo.add(new JTextField(7));
        this.pack();
    }

    private void creerCarre() {
        float parametre[] = {Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(4))).getText())
        };
        this.Parent.getControleur().action("Inspecteur", "creerCarre",Couleur.getColor(), parametre);
                
    }

    private void creerCerfVolant() {
        float parametre[] = {
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(4))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(6))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(8))).getText())
        };
        this.Parent.getControleur().action("Inspecteur", "creerCerfVolant",Couleur.getColor(), parametre);
    }

    private void creerLosange() {
        float parametre[] = {
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(4))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(6))).getText())
        };
        this.Parent.getControleur().action("Inspecteur", "creerLosange",Couleur.getColor(), parametre);
    }

    private void creerParallelogramme() {
        float parametre[] = {
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(4))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(5))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(7))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(8))).getText())
        };
        this.Parent.getControleur().action("Inspecteur", "creerParallelogramme",Couleur.getColor(), parametre);
    }

    private void creerQuadrilatere() {
        float parametre[] = {
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(4))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(5))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(7))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(8))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(10))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(11))).getText())
        };
        this.Parent.getControleur().action("Inspecteur", "creerQuadrilatere",Couleur.getColor(), parametre);
    }

    private void creerRectangle() {
        float parametre[] = {
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(4))).getText()),
                Integer.parseInt(((JTextField) (this.PanneauInfo.getComponent(6))).getText())
        };
        this.Parent.getControleur().action("Inspecteur", "creerRectangle",Couleur.getColor(), parametre);
    }

    private void creerTrapeze() {
        float parametre[] = {
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(1))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(2))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(4))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(5))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(7))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(8))).getText()),
                Float.parseFloat(((JTextField) (this.PanneauInfo.getComponent(10))).getText()),
        };
        this.Parent.getControleur().action("Inspecteur", "creerTrapeze",Couleur.getColor(), parametre);
    }

    private JComboBox ListeQuadrilatere;
    private JPanel PanneauInfo;
    private BoxLayout LayoutPanneauInfo;
    private JButton BoutonValidation;
    private JPanel PanneauChoixCouleur;
    private JTextArea TexteDescriptif;
    private JColorChooser Couleur;
    private IHM Parent;

    public static void main(String[] args) {

    }
}
